package DataStructures.sort;

import java.lang.reflect.Array;
import java.util.Arrays;

/**
 * @author ：ALi
 * @date ：Created in 2021/11/9 20:47
 * @description：希尔排序--交换排序
 * @modified By：
 * @version: $
 */
public class ShellSort {
    public static void main(String[] args) {
        int[] array = {8, 9, 1, 7, 2, 3, 5, 4, 6, 0, 10};
        shell(array);
        System.out.println(Arrays.toString(array));
    }

    public static void shell(int[] array) {
        int temp = 0;

        /**
         * @parament page是步长，就是一次分几组
         */

        for (int page = array.length / 2; page > 0; page = page / 2) {

            for (int i = page; i < array.length; i++) {
                //这个for循环是重点，这里让j=j-page是为了让最后的元素和该组前面的元素都进行比较
                for (int j = i - page; j >= 0; j = j - page) {
                    if (array[j] > array[j + page]) {
                        temp = array[j];
                        array[j] = array[j + page];
                        array[j + page] = temp;
                    }
                }
            }

        }
    }

}